An Interface is defined by a Script that contains skeleton declarations of Properties and/or Methods. These members are only place-holders; they have no specific implementation; this is provided by each of the Classes that support the Interface.
An Interface contains a collection of methods and properties that together represents a protocol that an application must follow in order to manipulate a Class in a particular way.
An example might be an Interface called Icompare that provides a single method (Compare) which compares two Instances of a Class, returning a value to indicate which of the two is greater than the other. A Class that implements Icompare must provide an appropriate Compare method, but every Class will have its own individual version of Compare. An application can then be written that sorts Instances of any Class that supports the ICompare Interface.
An Interface is implemented by a Class if it includes the name of the Interface in its :Class statement, and defines a corresponding set of the Methods and Properties that are declared in the Interface.
To implement a Method, a function defined in the Class must include a :Implements Method statement that maps it to the corresponding Method defined in the Interface:
:Implements Method <InterfaceName.MethodName>
Furthermore, the syntax of the function (whether it be result returning, monadic or niladic) must exactly match that of the method described in the Interface. The function name, however, need not be the same as that described in the Interface.
Similarly, to implement a Property the type (Simple, Numbered or Keyed) and syntax (defined by the presence or absence of a PropertyGet and PropertySet functions) must exactly match that of the property described in the Interface. The Property name, however, need not be the same as that described in the Interface.